home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Snippets / PNL Libraries / MyInternetMenu.p < prev    next >
Encoding:
Text File  |  1996-05-29  |  2.8 KB  |  129 lines  |  [TEXT/CWIE]

  1. unit MyInternetMenu;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Types;
  7.  
  8.     procedure InitInternetMenu;
  9.     procedure FinishInternetMenu;
  10.     procedure AddInternetCommand (s: Str255);
  11.     function GetInternetCommand (themenu, theitem: integer): Str255;
  12.     procedure RemoveInternetCommand (themenu, theitem: integer);
  13.  
  14. implementation
  15.  
  16.     uses
  17.         AppGlobals, MyUtils, MyNewPreferences, MyFMenus, MyMenus, MyStrH, MyGrowZones;
  18.  
  19.     var
  20.         send_to_mh, remove_mh: MenuHandle;
  21.         modified: boolean;
  22.  
  23.     procedure AddInternetCommand (s: Str255);
  24.         var
  25.             i, c: integer;
  26.             lessthan: boolean;
  27.             mi: Str255;
  28.     begin
  29.         c := CountMItems(send_to_mh);
  30.         i := 1;
  31.         lessthan := false;
  32.         while (i <= c) and not lessthan do begin
  33.             GetMenuItemText(send_to_mh, i, mi);
  34.             lessthan := (s <= mi);
  35.             if not lessthan then
  36.                 i := i + 1;
  37.         end;
  38.         if not lessthan or (s <> mi) then begin
  39.             InsertMenuItem(send_to_mh, 'fred', i - 1);
  40.             InsertMenuItem(remove_mh, 'fred', i - 1);
  41.             SetMenuItemText(send_to_mh, i, s);
  42.             SetMenuItemText(remove_mh, i, s);
  43.         end;
  44.         modified := true;
  45.     end;
  46.  
  47.     procedure SetInternetMenu (themenu, theitem: integer);
  48.     begin
  49.         SetIDItemEnable(themenu, theitem, EnoughSpace(0, 12000) & (CountMItems(send_to_mh) > 0));
  50.     end;
  51.  
  52.     procedure SetRemoveMenu (themenu, theitem: integer);
  53.     begin
  54.         SetIDItemEnable(themenu, theitem, (CountMItems(send_to_mh) > 0));
  55.     end;
  56.  
  57.     function GetInternetCommand (themenu, theitem: integer): Str255;
  58.         var
  59.             s: Str255;
  60.     begin
  61.         GetMenuItemText(send_to_mh, theitem, s);
  62.         GetInternetCommand := s;
  63.     end;
  64.  
  65.     procedure RemoveInternetCommand (themenu, theitem: integer);
  66.     begin
  67.         DeleteMenuItem(send_to_mh, theitem);
  68.         DeleteMenuItem(remove_mh, theitem);
  69.         modified := true;
  70.     end;
  71.  
  72.     procedure SaveInternetMenu;
  73.         var
  74.             i: integer;
  75.             s: Str255;
  76.             h: StrHHandle;
  77.     begin
  78.         if modified then begin
  79.             h := NewStrH;
  80.             if h <> nil then begin
  81.                 for i := 1 to CountMItems(send_to_mh) do begin
  82.                     GetMenuItemText(send_to_mh, i, s);
  83.                     SetIndStrH(h, i, s);
  84.                 end;
  85.                 PutResource(Handle(h), to_rsrc, to_strh_id);
  86.                 DisposeStrH(h);
  87.             end;
  88.             modified := false;
  89.         end;
  90.     end;
  91.  
  92.     procedure SetSaveMenu (themenu, theitem: integer);
  93.     begin
  94.         SetIDItemEnable(themenu, theitem, modified);
  95.     end;
  96.  
  97.     procedure LoadInternetMenu;
  98.         var
  99.             i: integer;
  100.             s: Str255;
  101.             h: StrHHandle;
  102.     begin
  103.         ReadPrefsHandle(Handle(h), to_rsrc, to_strh_id);
  104.         if h <> nil then begin
  105.             for i := 1 to CountStrsH(h) do begin
  106.                 AddInternetCommand(GetIndStrH(h, i));
  107.             end;
  108.             DisposeStrH(h);
  109.         end;
  110.     end;
  111.  
  112.     procedure InitInternetMenu;
  113.     begin
  114.         send_to_mh := NewMenu(M_InternetTo, 'Send To');
  115.         InsertMenu(send_to_mh, -1);
  116.         remove_mh := NewMenu(M_RemoveTo, 'Remove');
  117.         InsertMenu(remove_mh, -1);
  118.         LoadInternetMenu;
  119.         modified := false;
  120.         SetFBoth(CSaveMenu, @SaveInternetMenu, @SetSaveMenu);
  121.         SetFSetMenu(CXInternet, @SetInternetMenu);
  122.         SetFSetMenu(CXRemove, @SetRemoveMenu);
  123.     end;
  124.  
  125.     procedure FinishInternetMenu;
  126.     begin
  127.     end;
  128.  
  129. end.